package br.com.financas.bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import br.com.financas.abstractions.IContaService;
import br.com.financas.entity.Conta;
import br.com.financas.entity.Usuario;
import br.com.financas.service.ContaService;

@ManagedBean
@ViewScoped
public class NovaContaBean extends AbstractBean {

	@ManagedProperty(value = UsuarioBean.INJECTION_NAME)
	private UsuarioBean usuarioBean;
	private Conta conta = new Conta();
	private Usuario usuario = new Usuario();
	private IContaService<Conta> contaService;
	private boolean negativo;

	public NovaContaBean() {
		contaService = new ContaService();
	}

	public boolean isNegativo() {
		return negativo;
	}

	public void setNegativo(boolean negativo) {
		this.negativo = negativo;
	}

	public Conta getConta() {
		return conta;
	}

	public void setConta(Conta conta) {
		this.conta = conta;
	}

	public String cadastrarConta() {

		usuario = usuarioBean.getUsuario();

		String msgErro = null;
		String retorno = null;
		String nextPage = "/listar-contas.xhtml";
		double saldo = conta.getSaldo();
		conta.setUsuario(usuario);

		if (negativo == true) {
			conta.setSaldo(saldo * -1);
		}

		try {
			msgErro = contaService.validaInserir(conta);
		} catch (Exception e) {
			e.printStackTrace();
		}

		if (msgErro != null) {
			displayWarnMessageToUser("conta.existente");
		} else {
			displayInfoMessageToUser("cadastroConta.sucesso");

			retorno = nextPage;
		}

		return retorno;
	}

	public void setUsuarioBean(UsuarioBean usuarioBean) {
		this.usuarioBean = usuarioBean;
	}

}